package com.example.meservice.config;


import com.alibaba.csp.sentinel.adapter.spring.webmvc_v6x.SentinelWebInterceptor;
import com.example.meservice.interceptor.UserInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Spring MVC配置类
 * 用于注册和配置拦截器链
 *
 * @author czwa
 */
@Configuration
public class MvcConfig implements WebMvcConfigurer {

    /**
     * 注册拦截器到Spring MVC框架
     * 定义拦截器的执行顺序和拦截路径
     *
     * @param registry 拦截器注册表
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 1. 注册用户身份验证拦截器
        // 拦截除登录、注册外的所有请求，验证用户身份
        registry.addInterceptor(new UserInterceptor())
                .addPathPatterns("/**")  // 拦截所有请求
                .excludePathPatterns("/login", "/register");  // 排除登录和注册接口

        // 2. 注册Sentinel Web拦截器
        // 用于集成Sentinel流量控制和熔断降级功能
        registry.addInterceptor(new SentinelWebInterceptor())
                .addPathPatterns("/**");  // 拦截所有请求，进行流量监控和保护
    }
}